package study.java.jdk.jdk8._1_stream.collectors.to_map;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import study.java.jdk.jdk8.DataUtils;
import study.java.jdk.jdk8.User;

import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

@Slf4j
public class _1_toMap_Test {

    private List<User> userLt = DataUtils.buildUserLt();

    /**
     * ==============================
     * （1）键映射
     * （2）值映射
     * ==============================
     *
     * @param keyMapper   Function （key的映射函数）
     * @param valueMapper Function （value的映射函数）
     */
    @Test
    public void test() {
        Map<String, String> dest = userLt.stream()
                .collect(Collectors.toMap(User::getName, User::getCode));
        log.info("{}", dest);

    }

    /**
     * Map 的 value 为对象本身
     */
    @Test
    public void test1() {
        Map<String, User> dest = userLt.stream()
                .collect(Collectors.toMap(User::getName,
                        e -> e));
        log.info("{}", dest);
        userLt.stream()
                .collect(Collectors.toMap(User::getName,
                        Function.identity()));
    }
}
